<?php

/**
 * seguridad actions.
 *
 * @package    Tesis
 * @subpackage seguridad
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class seguridadActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */

    public function executeLogin() {
        $this->error_inicio_sesion = false;

         $login = $this->getRequestParameter('nomusuario');
         $password = $this->getRequestParameter('contrasena');

        if (isset($login)){
            $this->debugMessage($login);

            $c = new Criteria();
            $c->add(UsuarioPeer::NOMUSUARIO, $login);
            $user = UsuarioPeer::doSelectOne($c);
            if ($user){
                // password OK?
                if ($password == $user->getContrasena()) {
                    $this->getUser()->setAuthenticated(true);

                    // agrego atributos del usuario
                    $this->getUser()->setAttribute('id',$user->getId());
                    $this->getUser()->setAttribute('email', $user->getEmail());

                    //$this->getUser()->setTheme('moderno');
                    $this->getUser()->setAttribute('organizacion_nombre', $user->getInstitutoempresa());

                    $this->getUser()->setAttribute('usuario',$user->getNomusuario());
                    $this->getUser()->setCulture('es_ES');
                    $this->getUser()->setAttribute('pais_id',$user->getPaisId());

                    $this->debugMessage('Login ok');
                    return $this->redirect($this->getRequestParameter('referer', '@homepage'));
                }
                else {
                    $this->error_inicio_sesion = true;
                    return sfView::SUCCESS;
                }

            }
            else {
                $this->debugMessage('Login Error');
                $this->error_inicio_sesion = true;
                return sfView::SUCCESS;
            }
        }
        else {
            $this->referer =  $this->getRequest()->getReferer();
            $this->getRequest()->getParameterHolder()->set('referer', $this->getRequest()->getReferer());
        }
    }

    /* cierre de session */
    public function executeLogout() {
        $this->debugMessage("Logout");
        $this->getUser()->clearCredentials();
        $this->getUser()->setAuthenticated(false);
        $this->redirect('@homepage');
    }

    /* pagina de ingreso del usuario */
    public function executeEnviarclave() {


    }
    public function executeEnviar() {

        require_once (sfConfig::get('sf_symfony_lib_dir').'/addon/sfMail.class.php');

        $c = new Criteria();
        $c->add(UsuarioPeer::NOMUSUARIO, $this->getRequestParameter('nomusuario'));
        $user = UsuarioPeer::doSelectOne($c);

        if ($user) {
            if ($user->getEmail() != "") {
            $clave = $this->_generar_clave();
                $user->setContrasena(md5($clave));
                $user->save();

                $mail = new sfMail();
                $mail->initialize();
                $mail->setMailer("sendmail");
                $mail->setFrom("zoanyml@hotmail.com","WebMaster");
                $mail->addAddress($user->getEmail());
                $mail->setSubject("Cambio de clave en ". $_SERVER['SERVER_NAME']);

                $body = "Su clave ha sido modificada :\n\n";
                $body .= "\t" . $clave;
                $mail->setBody($body);
                $mail->send();
                $this->resultado = "El mail ha sido enviado a " . $user->getEmail();
            }
            else
                $this->resultado = "El usuario no posee una direccion de correo electronico valida";


        }
        else
            $this->resultado = "El usuario no existe";

    }

   /* capturo el error de login */
   public function handleErrorLogin()
    {
        $this->debugMessage("Error inicio de sesion");
        $this->error_inicio_sesion = true;
        return sfView::SUCCESS;
    }


    /* Genera una clave aleatoria de 4 letras y 4 numeros */
    private function _generar_clave(){

        $letras = "abcdefghijklmnopqrstuvwxyz";
        $clave = "";

        for ($i=0;$i<4;$i++) {
            $clave .= substr($letras,rand(1,strlen($letras)),1);
        }
        for ($i=0;$i<4;$i++) {
            $numero = rand(0,9);
            $clave .= $numero;
        }

        return $clave;
    }
}
?>